﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Cash.View
{
    public partial class CriarConta : BasePageCash
    {
        private int verificaUsuario()
        {
            int count = (from usu in cashEntity.USUARIO
                         where usu.EMAIL.Equals(txtEmail.Text)
                         select usu).Count();

            gravaBitacora("Pesquisa", "CriarConta->verificaUsuario");
            return count;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            hddResult.Value = "0";
            try
            { 
                ErroValidacao += Validacao.CampoVazio(txtNome.Text, "nome");
                ErroValidacao += Validacao.SelecioneDropDown(ddlSexo.SelectedValue, "sexo");
                ErroValidacao += Validacao.CampoVazio(txtNascimento.Text, "data nascimento");
                ErroValidacao += Validacao.CampoVazio(txtSenha.Text, "senha");
                ErroValidacao += Validacao.CampoVazio(txtConfSenha.Text, "confirmação senha");
                ErroValidacao += Validacao.CampoVazio(txtEmail.Text, "email");
                ErroValidacao += Validacao.Numero(txtNascimento.Text, "numero");
                ErroValidacao += Validacao.DataMaiorIgual(txtNascimento.Text, "data nascimento");
                if (verificaUsuario() > 0)
                {
                    ErroValidacao += "Funcionario já cadastrado.<br/>";
                }
                if (txtSenha.Text != txtConfSenha.Text)
                {
                    ErroValidacao += "Senhas não conferem.<br/>";
                }

                //TESTE VALIDACAO
                if ("".Equals(ErroValidacao))
                {
                    USUARIO usuario = new USUARIO();
                    int statusAtivo = (from status in cashEntity.STATUS
                                       where status.DESCRICAO == "Ativo"
                                       select status.ID_STATUS).SingleOrDefault();

                    usuario.ID_PERFIL = 2; //Usuario
                    usuario.ID_STATUS = statusAtivo;
                    usuario.NOME = txtNome.Text;
                    usuario.NASCIMENTO = DateTime.Parse(txtNascimento.Text);
                    usuario.SEXO = ddlSexo.SelectedValue;
                    usuario.EMAIL = txtEmail.Text;
                    String[] login = txtNome.Text.Split(' ');
                    usuario.USUARIO1 = retiraAcento(login[0].ToUpper() + "." + login[login.Length - 1].ToUpper());
                    usuario.SENHA = txtSenha.Text;
                    //Matricula
                    Random rdm = new Random();
                    String matricula = System.DateTime.Today.Year.ToString() +
                                                     System.DateTime.Now.Minute.ToString() +
                                                     System.DateTime.Now.Second.ToString();
                    for (int i = matricula.Length; i <= 7; i++)
                    {
                        matricula = matricula + rdm.Next(0, 9);
                    }
                    usuario.MATRICULA = int.Parse(matricula);

                    cashEntity.USUARIO.AddObject(usuario);
                    cashEntity.SaveChanges();
                    gravaBitacora("Cadastro", "Usuario " + usuario.NOME + " criou Login.");
                }
            }
            catch (Exception ex)
            {
                hddResult.Value = "ERRO";
                gravaBitacora("Erro", "Criar Login -> " + ex.Message);
            }
        }
    }
}